The following invention relates to workflows and, in particular, to a system and method for distributing workflow activities across multiple activity servers.
Workflow process management automates the flow of work through an organization to accomplish business tasks. In order to apply workflow process management to automate business tasks, the business tasks are modeled as workflow processes that include a coordinated set of process activities that are connected in order to accomplish the particular business task. Each process activity is a logical step or description of a piece of work that is part of the business task and can be a manual activity and/or an automated activity. By executing the activities associated with a particular workflow process, the corresponding business task is performed. See, for example, Workflow: An Introduction, by Rob Allen of Open Image System Inc., (http://www.wfmc.org/standards/docs/Workflow_An_Introduction.pdf)
Workflow process management techniques are useful for streamlining the execution of business tasks. By defining various elemental activities that are used in solving business tasks, a workflow process designer can use these activities to specify a workflow for solving a particular business task. Also, because many of the activities are common to different workflows, the task of specifying a workflow process to solve a business problem is often simplified.
Executing a workflow process typically entails writing computer software that performs the automated activities and provide an interface mechanism for receiving manual instructions for manual activities. By executing on a computer system the computer software associated with the activities of a particular workflow in the order defined by that workflow, the particular workflow process is executed and the corresponding business task is performed.
Although workflow management techniques simplify the definition and execution of business tasks, the use of these techniques gives rise to certain problems. For example, in a system that executes multiple workflows simultaneously, it may often occur that several workflows require access to the same activity in order to complete its execution thereby creating a bottleneck that will adversely affect system performance. Also, certain activities that are maintained by the computer system(s) executing the workflows may be infrequently used and, as a result, system resources are wasted. In addition, the execution of a first workflow that shares certain activities with a second workflow may become blocked by the second workflow that is waiting for a user response to a manual activity request. Thus, the benefits of applying workflow management techniques is limited by the ability to distribute and execute different activities in a shared environment and across multiple servers.
Various prior art techniques exist for load balancing workflow activities across system resources. Referring now to FIG. 1, there is shown a block diagram of a prior art “free-for-all” system 10 for distributing workflow activities. System 10 includes a plurality of activity servers 11 each of which perform a certain number of activities. Also included is a database 12 that stores the activities to be performed for executing various workflows. Each of activity servers 11 competes for work by polling database 12 for activities that they can process.
A drawback of this approach is that each time one of activity servers 11 obtains work from database 12, it must lock database 12 thereby creating contention between activity servers 11 accessing database 12. Furthermore, because each of activity servers 11 acts in isolation and is unaware of the workload being performed by the others of activity servers 11, it is cumbersome for allocate the activities of a workflow across several of activity servers 11. In addition, in the free-for-all approach, it is difficult to implement a strategy for distributing activities across activity servers 11.
Referring now to FIG. 2, there is shown a block diagram of a system 20 in which a resource manager 21 retrieves activities from database 12 and allocates the activities to the appropriate one of activity servers 11. While system 20 may reduce contention to database 12 because only resource manager 21 locks database 12, resource manager 21 itself is a single point of failure and may become a performance bottleneck.
Accordingly, it is desirable to provide a system and method for distributing workflow activities across multiple activity servers.